The present invention relates generally to software compilers, and more specifically, to register allocation.
Two types of registers that are relevant to the field of software compiling are hardware registers and symbolic registers. Hardware registers store bits of information and are often tightly coupled to CPUs and referenced in software instructions. Hardware registers are physical entities, and as such a system is provided with a finite number of hardware registers. Symbolic registers, on the other hand, are virtual registers located in memory, and thus may be potentially limitless in number. Register assignment occurs when symbolic registers are assigned to the hardware registers on a system. One problem area in register assignment occurs when a program's demand for symbolic registers exceeds the number of hardware registers available.